#include "Registro.h"

Registro::Registro() {
	this->clave = new Clave("0");
	this->transformada = 0;
	this->zero = 0;
}

Registro::Registro(Clave* clave, unsigned int offset){
	this->clave = clave;
	this->offset = offset;
	this->transformada = 0;
	this->zero = 0;
}

void Registro::transformarAFrontCoding(string primera, string ruta){
	if (transformada == 0){
		FrontCoding* fc = new FrontCoding(ruta);
		string modificada = fc->establecerFrontCoding(primera, this->clave->getClave());
		this->clave->setValorClave(modificada);
		this->transformada = 1;
		modificada.clear();
		delete fc;
	}
}

void Registro::sacarElFrontCoding(string palabra, string ruta){
	if (transformada == 1){
		FrontCoding* fc = new FrontCoding(ruta);
		string modificada = fc->interpretarFrontCoding(palabra);
		this->clave->setValorClave(modificada);
		this->transformada = 0;
		modificada.clear();
		delete fc;
	}
}
Registro::~Registro() {
}

void Registro::serializar(char * buffer, unsigned int &offset){
	this->clave->serializar(buffer, offset);
	Persistor::transformar_entero_en_char(buffer, offset, this->offset);
	Persistor::transformar_entero_en_char(buffer, offset, this->transformada);
	Persistor::transformar_entero_en_char(buffer, offset, this->zero);
}

void Registro::deserializar(char * buffer, unsigned int &offset){
	this->clave->deserializar(buffer,offset);
	this->offset =Persistor::obtener_entero_desde_Buffer(buffer,offset);
	this->transformada =Persistor::obtener_entero_desde_Buffer(buffer,offset);
	this->zero = Persistor::obtener_entero_desde_Buffer(buffer,offset);
}

void Registro::toString(){
	cout << "Elemento de Nodo --->" << endl;
	cout<< "	Dato del elemento: " << this->clave->getClave() << endl;
	cout<< "	offset : " << this->offset << endl;
}
